<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.georss.org/georss" elementFormDefault="qualified" version="1.0">
   <xs:annotation>
      <xs:documentation>GML application schema for the Simple and GML serializations of GeoRSS</xs:documentation>
      <xs:documentation>makes use of the gmlgeorss profile of GML 3.1.1</xs:documentation>
      <xs:documentation>Generated by Joshua Lieberman - December 2006</xs:documentation>
   </xs:annotation>
    <xs:import namespace="http://www.opengis.net/gml" schemaLocation="gmlgeorss.xsd"/>

  <xs:element name="_featureProperty" type="georss:abstractFeaturePropertyType" abstract="true" substitutionGroup="gml:_Object">
    <xs:annotation>
         <xs:documentation>Global element which acts as the head of a substitution group that may include any element which is a GeoRSS feature property</xs:documentation>
      </xs:annotation>
  </xs:element>
  <xs:complexType name="abstractFeaturePropertyType" abstract="true">    
      <xs:annotation>
         <xs:documentation>Abstract type of georss feature properties</xs:documentation>
      </xs:annotation>
  </xs:complexType> 

  <!-- =========================================================== -->
      <xs:element name="where" type ="georss:whereType" substitutionGroup="georss:_featureProperty">
      <xs:annotation>
          <xs:documentation>Geometry property element of a GeoRSS GML instance</xs:documentation>
       </xs:annotation>
      </xs:element>
  <!-- =========================================================== -->  
    <xs:complexType name="whereType">
       <xs:complexContent>
         <xs:extension base="georss:abstractFeaturePropertyType"> 
           <xs:choice>
            <xs:element ref="gml:Point"/>
            <xs:element ref="gml:LineString"/>
            <xs:element ref="gml:Polygon"/>
            <xs:element ref="gml:Envelope"/>
            <xs:element ref="gml:CircleByCenterPoint"/>
           </xs:choice>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
     
  <!-- =========================================================== -->
  <!-- GeoRSS Simple Elements -->
  <!-- =========================================================== -->
    
    <xs:element name="point" type="georss:doubleList">
      <xs:annotation>
          <xs:documentation>Point property element containing a pair of coordinates representing latitude then longitude in the WGS84 coordinate reference system</xs:documentation>
          <xs:documentation>This GeoRSS Simple element maps completely onto the where + gml:Point combination of GeoRSS GML</xs:documentation>
          <xs:documentation>The content of this element must be one pair of coordinates in the WGS84 coordinate reference system</xs:documentation>
      </xs:annotation>
    </xs:element>
       <!-- ================================================= -->
    
    <xs:element name="line" type="georss:doubleList">
      <xs:annotation>
          <xs:documentation>Line property element containing a list of pairs of coordinates representing latitude then longitude in the WGS84 coordinate reference system</xs:documentation>
          <xs:documentation>This GeoRSS Simple element maps completely onto the where + gml:LineString combination of GeoRSS GML</xs:documentation>
          <xs:documentation>The content of this element must be two or more pairs of coordinates in the WGS84 coordinate reference system</xs:documentation>
      </xs:annotation>
    </xs:element>
       <!-- ================================================= -->
    
    <xs:element name="polygon" type="georss:doubleList">
      <xs:annotation>
          <xs:documentation>Closed ring property element containing a list of pairs of coordinates (first pair and last pair identical) representing latitude then longitude in the WGS84 coordinate reference system</xs:documentation>
          <xs:documentation>This GeoRSS Simple element maps completely onto the where + gml:Polygon combination of GeoRSS GML</xs:documentation>
          <xs:documentation>The content of this element must be three or more pairs of coordinates in the WGS84 coordinate reference system</xs:documentation>
      </xs:annotation>
    </xs:element>
       <!-- ================================================= -->
    
    <xs:element name="box" type="georss:doubleList">
      <xs:annotation>
          <xs:documentation>Rectangular envelope property element containing two pairs of coordinates (lower left envelope corner, upper right envelope corner) representing latitude then longitude in the WGS84 coordinate reference system</xs:documentation>
          <xs:documentation>This GeoRSS Simple element maps completely onto the where + gml:Envelope combination of GeoRSS GML</xs:documentation>
          <xs:documentation>The content of this element must be two pairs of coordinates in the WGS84 coordinate reference system</xs:documentation>
      </xs:annotation>
    </xs:element>
       <!-- ================================================= -->
    
    <xs:element name="circle" type="georss:doubleList">
      <xs:annotation>
          <xs:documentation>Circle  property element containing three coordinates (centerpoint latitude, centerpoint longitude, circle radius) with latitude then longitude in the WGS84 coordinate reference system and radius in meters</xs:documentation>
          <xs:documentation>This GeoRSS Simple element maps completely onto the where + gml:CircleByCenterPoint combination of GeoRSS GML</xs:documentation>
          <xs:documentation>The content of this element must be one pair of coordinates in the WGS84 coordinate reference system followed by one coordinate in meters</xs:documentation>
      </xs:annotation>
    </xs:element>
    
  <!-- =========================================================== -->
  <!-- Additional expressive elements for both Simple and GML      -->
  <!-- =========================================================== -->
       
   <xs:element name="featureName" type="xs:QName">
          <xs:annotation>
            <xs:documentation>Additional georss property indicating the name or identifier of the referenced geographic entity.</xs:documentation>
         </xs:annotation>
   </xs:element>  
       <!-- ================================================= -->
       
   <xs:element name="featureTypeTag" type="xs:QName">
          <xs:annotation>
            <xs:documentation>Additional georss property indicating the type of the referenced geographic entity.</xs:documentation>
         </xs:annotation>
   </xs:element>  
       <!-- ================================================= -->
       
   <xs:element name="relationshipTag" type="xs:QName">
          <xs:annotation>
            <xs:documentation>Additional georss property indicating the relationship of the accompanying geometric property to the referenced geographic entity.</xs:documentation>
         </xs:annotation>
   </xs:element>  
       <!-- ================================================= -->
       
   <xs:element name="elev" type="xs:double">
          <xs:annotation>
            <xs:documentation>Additional georss property indicating the elevation in meters such as obtained by GPS of the referenced geographic entity.</xs:documentation>
         </xs:annotation>
   </xs:element>  
       <!-- ================================================= -->
       
   <xs:element name="floor" type="xs:integer">
          <xs:annotation>
            <xs:documentation>Additional georss property indicating the elevation in building floors of the referenced geographic entity.</xs:documentation>
         </xs:annotation>
   </xs:element>  
       <!-- ================================================= -->
       
   <xs:element name="radius" type="xs:double">
          <xs:annotation>
            <xs:documentation>Additional georss property indicating the radius or buffer about the accompanying geometric property which represents the referenced geographic entity.</xs:documentation>
         </xs:annotation>
   </xs:element>  
       <!-- ================================================= -->
 
  <xs:simpleType name="doubleList">
      <xs:annotation>
         <xs:documentation>XML List based on XML Schema double type, identical to gml:doubleList.  An element of this type contains a space-separated list of double values</xs:documentation>
      </xs:annotation>
      <xs:list itemType="xs:double"/>
   </xs:simpleType>

       <!-- ================================================= -->
   
</xs:schema>